package com.monkeyboy.rabbitmq.message;

import java.util.HashMap;
import java.util.Map;

import com.monkeyboy.rabbitmq.RabbitmqConnectionUtil;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

/**
 * 作用： 生产者生产消息
 * 
 * @author Gavin
 * @time:2018年10月24日
 */
public class Producer {
	public static void main(String[] args) throws Exception {
		// 获取到连接一级mq通道(相当于mysql获取连接)
		Connection connection = RabbitmqConnectionUtil.getConnection();
		// 从连接中创建通道(相当于mysql获取连接后还得获取到statement才能操作数据库一样的道理)
		Channel channel = connection.createChannel(1);

		// 发送一个带有附加属性的消息
		/**
		 * 
		 */
		Map<String, Object> myParam = new HashMap<String, Object>();
		myParam.put("password", 123456);
		myParam.put("name", "高嘉银");
		AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder()
				.deliveryMode(2)// 2.表示持久化消息，1代表不持久化
				.contentEncoding("UTF-8")// 设置字符编码
				.expiration("10000")// 设置该消息的过期时间（单位毫秒），如果在该时间段内消息没有被消费掉那么就会被清除
				.headers(myParam)// 自定义的参数，Map格式
				.build();
		// 发送消息到交换机中
		String msg = "生产者：----》message";
		channel.basicPublish("", "test", properties, msg.getBytes());

		// 关闭通道和连接
		channel.close();
		connection.close();
	}
}
